UNPKG

@alphabite/medusa-wishlist

Version:
151 lines 12.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GET = GET; exports.PUT = PUT; exports.DELETE = DELETE; const utils_1 = require("@medusajs/framework/utils"); const wishlist_1 = require("../../../../modules/wishlist"); const utils_2 = require("../../../../utils/utils"); //-----Retrieves a specific wishlist by ID-----// async function GET(req, res) { const logger = req.scope.resolve("logger"); const { id } = req.params; const customer_id = req?.auth_context?.actor_id; const { items_fields, include_calculated_price, include_inventory_count } = req.validatedQuery; const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE); const options = wishlistService._options; if (!options.allowGuestWishlist && !customer_id) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "Guest wishlists are now allowed"); } try { const query = req.scope.resolve("query"); const { data } = await query.graph({ entity: "wishlist", filters: { id, }, ...req.queryConfig, fields: [ ...utils_2.defaultFields, ...(req.queryConfig?.fields || []), ...(options?.wishlistFields || []), ], }); const wishlist = data?.[0]; if (!wishlist) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Wishlist with ID ${id} not found`); } if (wishlist?.customer_id && wishlist?.customer_id !== customer_id) { throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, "You are not authorized to access this wishlist"); } const { data: items, metadata: items_metadata } = await query.graph({ entity: "wishlist_item", filters: { wishlist_id: wishlist.id }, fields: [ ...utils_2.defaultItemsFields, ...(options?.wishlistItemsFields || []), ...(items_fields || []), ], pagination: { take: options?.includeWishlistItemsTake || 5, skip: 0, }, }); let variantsAvailability = {}; if (include_inventory_count) { variantsAvailability = await (0, utils_1.getVariantAvailability)(query, { sales_channel_id: wishlist.sales_channel_id, variant_ids: items.map((i) => i.product_variant_id), }); } let variantsPrices = {}; if (include_calculated_price) { for (const item of items) { const { data: products } = await query.graph({ entity: "product", fields: ["id", "variants.id", "variants.calculated_price.*"], // narrow to a product that contains your variant filters: { variants: { id: item.product_variant_id, }, }, context: { variants: { calculated_price: (0, utils_1.QueryContext)({ region_id: "reg_01J3MRPDNXXXDSCC76Y6YCZARS", currency_code: "eur", }), }, }, }); products.map((product) => { product.variants.map((variant) => { variantsPrices[variant.id] = variant.calculated_price; }); }); } } const enrichedItems = items.map((item) => { const availability = variantsAvailability[item.product_variant_id]?.availability; const calculated_price = variantsPrices[item.product_variant_id]; let enrichedItem = { ...item }; if (include_inventory_count) { enrichedItem.product_variant.availability = availability || null; } if (include_calculated_price) { item.product_variant.calculated_price = calculated_price || null; } return { ...item, product_variant: { ...item.product_variant, availability, calculated_price, }, }; }); return res.status(200).json({ ...wishlist, items_count: items_metadata?.count, items: enrichedItems, }); } catch (error) { logger.error("Error fetching wishlists:", error instanceof Error ? error : new Error(String(error))); return res.status(500).end(); } } async function PUT(req, res) { const logger = req.scope.resolve("logger"); const input = req.body; const { id } = req.params; try { const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE); const updated_wishlist = await wishlistService.updateWishlists({ id, ...input, }); return res.status(200).json(updated_wishlist); } catch (error) { logger.error("Update wishlists failed:", error instanceof Error ? error : new Error(String(error))); return res.status(500).end(); } } async function DELETE(req, res) { const logger = req.scope.resolve("logger"); const { id } = req.params; try { const wishlistService = req.scope.resolve(wishlist_1.WISHLIST_MODULE); await wishlistService.deleteWishlists({ id }); return res.status(200).json({ id, }); } catch (error) { logger.error("Wishlist deleting failed.", error instanceof Error ? error : new Error(String(error))); return res.status(500).end(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0JBLGtCQTZKQztBQUVELGtCQTJCQztBQU9ELHdCQXlCQztBQTdPRCxxREFLbUM7QUFJbkMsMkRBQStEO0FBRS9ELG1EQUE0RTtBQU81RSxpREFBaUQ7QUFDMUMsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBMkQsRUFDM0QsR0FBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDMUIsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUM7SUFDaEQsTUFBTSxFQUFFLFlBQVksRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxHQUN2RSxHQUFHLENBQUMsY0FBYyxDQUFDO0lBRXJCLE1BQU0sZUFBZSxHQUNuQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFFekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGlDQUFpQyxDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUss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